package com.test.demo.Interview.basis;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Stack;

/**
 * equals和==
 * 使用equals方法进行校验是根据重写的Object方法进行校验是否相等，而==是校验的对象的地址。重写hashcode方法也不能使==相等，
 * 只有在使用hashSet或者HashMap的时候会根据HashCode和Equals方法来进行校验是否是同一个对象。
 */
public class EquelsAndDengDeng {
    public static void main(String[] args) {
        Person person1 = new Person("1");
        Person person2 = new Person("1");
        System.out.println(person1==person2);
        System.out.println(person1.equals(person2));

        HashSet<Object> set = new HashSet<>();
        set.add(person1);
        set.add(person2);
        System.out.println(set);
        new ArrayList<>();
    }
}

class Person{

    public String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Person){
            Person person=(Person)obj;
            return this.name.equals(person.name);
        }
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        return 1;
    }
}
